import java.util.Scanner;

public class Main {

    //组合问题
    //从 n 中选 m 个数进行排列
    //按字典序输出

    // cnt 代表已经选择的数量
    // pos 代表当前的层/当前的元素
    public static int n;
    public static int m;
    public static int[] ans = new int[30];
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        m = scan.nextInt();
        dfs(1,0);
    }

    private static void dfs(int pos, int cnt) {
        //先判断终止条件
        //减脂
        if(cnt > m) return ;
        if(pos > n ){
            if(cnt == m){
                for (int i = 1; i <= m ; i++) {
                    System.out.print(ans[i] + " ");
                }
                System.out.println();
            }
            return ;
        }
        //选了这个数，进入下一层
        ans[cnt + 1] = pos;
        dfs(pos + 1,cnt + 1);
        //回溯
        ans[cnt + 1] = 0;
        //不选这个数，进入下一层
        dfs(pos + 1,cnt);
    }
}
